package com.shioirikukuri.service;

import com.shioirikukuri.entity.User;
import java.util.List;
import java.util.Optional;

public interface IUserService {

	/**
	 * 添加一个新的消费者用户
	 *
	 * @param user 要添加的用户对象
	 * @return 返回保存后的用户对象
	 */
	User addUser(User user);

	/**
	 * 根据ID删除一个用户
	 *
	 * @param id 用户的ID
	 */
	void deleteUser(Long id);

	/**
	 * 更新用户信息
	 *
	 * @param user 包含更新信息的用户对象
	 * @return 返回更新后的用户对象
	 */
	User updateUser(User user);

	/**
	 * 根据手机号查询用户
	 *
	 * @param phoneNumber 用户的手机号
	 * @return 如果找到匹配的用户，则返回该用户的Optional包装；否则返回Optional.empty()
	 */
	Optional<User> findUserByPhoneNumber(String phoneNumber);


	/**
	 * 获取所有用户列表
	 *
	 * @return 返回所有用户的列表
	 */
	List<User> getAllUsers();

	/**
	 * 根据ID查找用户
	 *
	 * @param id 用户的ID
	 * @return 如果找到匹配的用户，则返回该用户的Optional包装；否则返回Optional.empty()
	 */
	Optional<User> getUserById(Long id);


	void blacklistUser(Long id);

	void unblacklistUser(Long id);

	/**
	 * 根据手机号判断用户是否被拉黑
	 * @param phoneNumber
	 * @return
	 */
	boolean isUserBlacklisted(String phoneNumber);

	/**
	 * 根据角色查找用户
	 * @param frontDesk
	 * @return
	 */
	List<User> getUsersByRole(String frontDesk);

	/**
	 * 获取所有消费者用户
	 * @return
	 */
	List<User> getAllConsumers();

}